// 数据库操作
const mongoose = require('mongoose');
// 模型规则类
const {
    Schema
} = mongoose;

// 对象规则验证
const Joi = require('joi');
// 床模型规则，Bed集合用于标识每个房型中包含的床位类型及其对应的数量
const facilitySchema = new Schema({
    title: {
        type: String,
        required: [true, '标题不能为空'],
        unique: [true, '已有的宝可梦！请换一个收服吧~'],
        minlength: 1,
        maxlength: 6
    },
    icon: {
        type: String
    }
}, {
    versionKey: false
});

const Facility = mongoose.model('Facility', facilitySchema);

// 床格式校验
const badFacility = (fcl, req, res) => {
    // 定义对象验证规则
    const schema = {
        title: Joi.string().required().regex(/^[a-zA-Z\u4e00-\u9fa5]{1,6}$/).error(new Error('设施标题不能为空，可包含汉字或英文字母，长度为1~6位')),
        icon: Joi.string().error(new Error("设施图标格式不正确"))
    };
    // 验证
    const {
        error
    } = Joi.validate(fcl, schema, {
        // 检测到所有错误
        abortEarly: false,
        // 允许对象包含被忽略的未知键
        allowUnknown: true
    });
    if (error) {
        res.sendResult(null, 400, error.message);
        return true;
    }
}

// 导出模块成员
module.exports = {
    Facility,
    badFacility
}